Prior art page printers typically capture an entire page before any image is placed on paper. In such printers, formatting is either performed on the host computer (with large volumes of rasterized data being shipped to the printer), or on a formatter within the printer. Since a laser print "engine" operates at a constant speed, if new rasterized data is not available at a rate that keeps up with the engine's operation, a print "overrun" occurs and the page is not printable.
To prevent print overruns, a variety of techniques are in use. In one, a full raster bit map of an entire page is stored so that the print mechanism always has rasterized data awaiting action. At 300 dots per inch resolution, this technique requires approximately a megabyte of raster memory for each page. At 600 dots per inch, four megabytes of memory are required. Additionally, because laser printers achieve their rated speeds by pipelining of raster data, additional raster memory is needed to run the printer at its rated speed. Otherwise, composition of a following page cannot begin until a prior page has been ejected to the printer's output tray.
To maintain the cost of laser printers at a low level, substantial efforts have been directed to reducing the amount of required raster memory. One technique for memory reduction involves the construction of a page description. The page description is built in two steps: during formatting, data received from a host computer is converted into a list of simple commands, called display commands, that describe what must be printed. The second step prepares the display command list for printing and entails a parsing of the display commands and a rendering of the described objects into a raster bit map. This procedure requires a full page raster bit map memory because the same memory is used for succeeding pages.
To reduce the amount of required memory, the display command list procedure has been modified by sorting display commands according to their vertical position on a page. The page is then divided into sections called page strips or "page intermediate", and each page strip is passed, sequentially, to the print engine for printing. When display commands within a page strip are rendered into rasterized data at a fast enough pace, the same memory used to store a first page strip can be reused for a subsequent page strip further down the page (once the first page strip has been transferred to paper).
The Laser Jet III Laser Printer, manufactured by the Assignee of this application, employs a display command list algorithm and utilizes three raster buffers for page intermediate strips. The first buffer is reused on the fourth strip of a page; the second buffer is reused on the fifth strip, etc. For an eight page per minute printer, little time is left between the finishing of strip one and the time when strip four will be required by the print mechanism. If the strip is not delivered in time, a "print overrun" occurs and the page is incorrectly printed.
Most recently, 600 dot per inch resolution printers have been introduced to the marketplace. Such printers handle not only text but also line art and various types of images. To minimize the amount of memory required in such printers, data compression techniques are employed. For instance, run length data compression is used by host processors in the process of data transfer to the printer. In a runlength encoding scheme, data that repeats is encoded by indicating the identity of the data and the run/length of the repeat.
As can be seen from the above, printers have employed compression of images and line art to enable minimization of raster image buffer memories. However, even the use of sophisticated data compression procedures does not always prevent the occurrence of a print overrun. Character fonts have generally not been subject to compression even though they occupy substantial memory space in printer buffer memories. Some host processors download a bit map of a font directly into the printer's buffer. Certain printers also include internally stored fonts that are termed "scalable". A scalable font is one wherein an outline of a character is stored in printer memory. When the font is required for use in the printer, it is scaled to the proper size, loaded into random access memory, the interiors of the outlined characters "filled"and then preserved for use as fully configured character bit maps.
Certain printer control languages (e.g., PCL) require that font bit maps be contiguously stored within a printer's memory. Small fonts do not create substantial memory capacity problems because the associated bit maps are small. However, large fonts can occupy significant memory, as the size of memory needed to store such a font grows as the square of the font "point size". Large numbers of contiguous memory blocks may not be available in the printer when a large font is received. Furthermore, reserving large contiguous blocks of memory is wasteful and is to be avoided, if possible.
Accordingly, it is an object of this invention to provide a page printer having a compression procedure which operates upon character fonts.
It is another object of this invention to provide a page printer that selectively data compresses fonts so as to more efficiently utilize available buffer memory size.
It is yet another object of this invention to provide a page printer that selectively employs font data compression when buffer memory is indicated as being either low or in an "out" state.